# -*-coding:utf-8-*-

from ConfigParser import ConfigParser

CONF_FILENAME = "conf/ini.txt"  # 定义配置文件
fileReader = ConfigParser()  # 文件读取遍历fileReader
fileReader.read(CONF_FILENAME)  # 设置log的输入文件


class DataCenter:
    def __init__(self):
        self.clientEnable = True
        self.inTest = False
        # 动态窗口参数
        self.client_width = 1000
        self.client_height = 715
        self.logPanel_width = 375
        self.logPanel_height = 715
        self.contentPanel_width = 375
        self.contentPanel_height = 715
        # 静态窗口参数
        self.menuPanel_width = 250
        self.contentTitle_height = 55
        self.contentLine_height = 50
        # 页面背景色
        self.pageBgColor = '#ffffff'
        self.thread_unitTest = None

        self.tcpToken = None
        self._const = {
            'HTTP':{
                'HOST':'114.55.176.184',
                #'HOST':'192.168.9.110:8080',
                #'HOST':'114.55.63.81',
                'PORT':80
            },
            'WS':{
                'CONFIG':{
                    #'HOST':'120.55.144.128',#负载均衡服务器：120.55.144.128
                    'HOST':'120.27.202.5',#负载均衡服务器：120.55.144.128
                    #'HOST':'114.55.63.81',
                    'PORT':8087,
                    'PATH':'fn-ws'
                },
                'TOKEN': '',
                'cid': None,
                'sid': None,
                'aip': None,
                'aport': None,
                'stat': None
            },
            'RTPWS':{
                'CONFIG':{
                    'HOST':'127.0.0.1',
                    'PORT':8087,
                    'PATH':''
                },
                'cid': None,
                'sid': None,
                'aip': None,
                'aport': None,
                'stat': None
            },
            'TEMPGROUP_TYPE':{
                'singleCall':4,
                'tempGroup':5,
                'boardCast':3
            },
            'CHANNEL_TYPE':{
                'intercom':1,
                'meeting':2,
                'broadcast':3,
                'singleCall':4,
                'tempGroup':5
            },
            'PressureTest':{
                'softwareQuery':0,
                'loginNum':0,
                'groupQuery':0,
                'getGroupMemberNum':0,
                'inChannelNum':0,
                'onlineNumMax':0,
                'timeMin_softwareQuery':0,
                'timeMax_softwareQuery':0,
                'timeMin_httpLogin':0,
                'timeMax_httpLogin':0,
                'timeMin_groupQuery': 0,
                'timeMax_groupQuery': 0,
                'timeMin_getGroupMember':0,
                'timeMax_getGroupMember':0,
                'timeMin_tcpIn':0,
                'timeMax_tcpIn':0,
                'timeMin_heart':0,
                'timeMax_heart':0,
                'timeMin_inChannel':0,
                'timeMax_inChannel':0
            },
            'simulationTest':{
                'bakIntercomGroup':0,
                'transmitTime':0
            }
        }
        # 1:对讲；2:会议；3:广播；4:单呼；5:临时组
        self.videoType=[1,2,3,4,5]

        # 网路状态
        self.netstatus = 0

        self.treeList = {
            'treeList_admin': [
                u'运营管理平台',
                (u'单元测试', u'接口测试', u'集成测试', u'性能测试', u'安全测试', u'容灾测试')
            ],
            'treeList_company': [
                u'企业管理平台',
                (u'单元测试', u'接口测试', u'集成测试', u'性能测试', u'安全测试', u'容灾测试')
            ],
            'treeList_dispatch': [
                u'调度台',
                (u'单元测试', u'接口测试', u'集成测试', u'性能测试', u'安全测试', u'容灾测试', u'终端模拟')
            ],
            'treeList_intercom': [
                u'对讲机终端',
                (u'单元测试', u'接口测试', u'集成测试', u'性能测试', u'安全测试', u'容灾测试', u'终端模拟',u'对讲模拟')
            ],
            'treeList_wz': [
                u'微型消防站管理系统',
                (u'单元测试',u'接口测试',u'集成测试',u'性能测试',u'安全测试',u'容灾测试')
            ],
            'treeList_androidScreen': [
                u'大屏机',
                (u'单元测试', u'接口测试', u'集成测试', u'性能测试', u'安全测试', u'容灾测试')
            ]
        }

        self.treeListCompare = {'1': u"单元测试",'2': u"接口测试",'3': u"集成测试",'4': u"性能测试",'5': u"安全测试",'6': u"容灾测试",'7':u"终端模拟",'8':u"对讲模拟"}

        self.reportSummary = {'test_name':u'项目名称','test_version':u'测试版本','test_pl':u'测试平台','test_net':u'测试网络','test_sum':u'测试总数','test_success':u'通过总数','test_failed':u'失败总数','test_date':u'测试日期','test_score':u'测试评分'}

        self.treeList_bak = {
            'treeList_admin': [
                u'企业管理平台',
                (u'企业管理', [u'企业新增', u'企业编辑']),
                (u'二级管理员管理', [u'二级管理员新增', u'二级管理员编辑']),
                (u'权限管理', [u'企业权限管理', u'管理员权限管理']),
                (u'用户管理', [u'查看用户'])
            ],
            'treeList_company': [
                u'企业运营平台',
                (u'企业群组管理', [u'企业群组增加', u'企业群组查询/编辑']),
                (u'企业用户管理', [u'企业用户增加', u'企业用户查询/编辑']),
                (u'企业管理员管理', [u'企业管理员增加', u'企业管理员查询/编辑'])
            ],
            'treeList_dispatch': [
                u'调度台',
                (u'登录', [u'正常登录验证', u'异常登录验证', u'记住账号和密码', u'账号重复登录处理', u'账号退出', u'修改密码']),
                (u'群组列表', [u'群组成员显示', u'进入群组逻辑', u'群组切换', u'群组保持']),
                (u'地图', [u'地图显示', u'显示成员筛选', u'框选', u'位置图标']),
                (u'对讲', [u'当前群组显示', u'PTT按键', u'提示音', u'状态显示']),
                (u'临时组', [u'现在临时组成员', u'临时对讲中', u'临时对讲总-增加成员', u'临时对讲功能验证', u'临时组成员显示', u'临时组的接听和退出', u'临时组状态下断网处理']),
                (u'广播', [u'广播邀请', u'广播中', u'功能验证', u'广播接听与挂断', u'广播挂断验证', u'广播状态下的断网处理', u'广播自动解散']),
                (u'数据交互',
                 [u'在CMP平台禁用已经登录的账号', u'在CMP平台对用户家进入或移除群组', u'在CMP平台对群组添加或删除成员', u'在CMP平台禁用或删除群组', u'在CMP平台启用或新增群组']),
                (u'其它', [u'发起第二个语音', u'掉线提示'])
            ],
            'treeList_intercom': [
                u'对讲机终端',
                (u'对讲机硬件', [u'侧键一的使用', u'侧键二的使用', u'旋钮的使用']),
                (u'对讲群组的切换', [u'群组间切换', u'退出群组']),
                (u'对讲群组的转移', [u'离开群组', u'进入群组']),
                (u'专项测试', [u'电池评估', u'掉线测试', u'回音测试', u'流量消耗测试', u'网络丢包率测试', u'网络时延测试', u'语音质量测试'])
            ],
            'treeList_wz': [
                u'微型消防站管理系统',
                (u'微站登录', [u'登录界面显示', u'正常登录验证', u'异常登录验证', u'记住密码']),
                (u'微站统计', [u'微站统计界面功能1', u'微站统计界面功能2', u'微站统计界面功能3', u'微站统计界面功能4']),
                (u'全部微站界面', [u'全部微站界面功能1', u'全部微站界面功能2', u'全部微站界面功能3', u'全部微站界面功能4']),
                (u'全部检查界面', [u'全部检查界面功能1', u'全部检查界面功能2', u'全部检查界面功能3', u'全部检查界面功能4']),
                (u'微站管理', [u'微站管理界面功能1', u'微站管理界面功能2', u'微站管理界面功能3', u'微站管理界面功能4']),
                (u'微站检查', [u'微站检查界面功能1', u'微站检查界面功能2', u'微站检查界面功能3', u'微站检查界面功能4']),
                (u'账号管理', [u'账号管理界面功能1', u'账号管理界面功能2', u'账号管理界面功能3', u'账号管理界面功能4']),
                (u'行政管理', [u'行政管理界面功能1', u'行政管理界面功能2', u'行政管理界面功能3', u'行政管理界面功能4'])
            ],
            'treeList_androidScreen': [
                u'大屏机',
                (u'登录模块', [u'界面显示', u'登录校验', u'记住密码'])
            ]
        }

        self.treeListCompare_bak = {
            'treeList_admin': {
                "wz_login": u"登录界面显示",
                "normal_login_check": u"正常登录验证",
                "abnormal_login_check": u"异常登录验证",
                "remember_password": u"记住密码"
            },
            'treeList_company': {
                "wz_login_display": u"登录界面显示",
                "normal_login_check": u"正常登录验证",
                "abnormal_login_check": u"异常登录验证",
                "remember_password": u"记住密码"
            },
            'treeList_dispatch': {
                "wz_login_display": u"登录界面显示",
                "normal_login_check": u"正常登录验证",
                "abnormal_login_check": u"异常登录验证",
                "remember_password": u"记住密码"
            },
            'treeList_intercom': {
                "wz_login_display": u"登录界面显示",
                "normal_login_check": u"正常登录验证",
                "abnormal_login_check": u"异常登录验证",
                "remember_password": u"记住密码"
            },
            'treeList_wz': {
                "wz_login": u"登录界面显示",
                "wz_normal_login_check": u"正常登录验证",
                "wz_abnormal_login_check": u"异常登录验证",
                "wz_remember_password": u"记住密码"
            },
            'treeList_androidScreen': {
                "wz_login_display": u"登录界面显示",
                "normal_login_check": u"正常登录验证",
                "abnormal_login_check": u"异常登录验证",
                "remember_password": u"记住密码"
            }
        }

        self.testResult_bak = [
            [u'模块', u'测试功能', u'测试目的', u'预置条件', u'执行步骤', u'预期结果', u'测试结果', u'缺陷', u'一般', u'WZ-1.0-02-06-1', u'范训山',
             u'Linyy'],
            [u'微站登录', u'登录界面显示', u'确认登录界面的文本行状态显示是否正确', u'', u'进入登录界面，查看文本行显示，输入信息后查看文本行显示',
             u'账号行默认显示“请输入您的账号"，密码行默认显示“请输入您的密码”，输入账号或密码后文本行显示输入的信息',
             u'账号行和密码行的默认信息不对，账号行应该默认为“请输入您的账号”，密码行应该默认为“请输入您的密码”', u'缺陷', u'一般', u'WZ-1.0-02-06-1', u'范训山', u'Linyy'],
            [u'微站登录', u'异常登录验证', u'检查账号密码正确但无网络情况下是否能登录成功', u'登录的账号存在且无网络', u'登录界面输入正确的账号密码，点击登录',
             u'不能登录成功，提示“连接超时，请检查网络”', u'1.提示信息不对，应该为“连接超时，请检查网络”2.弹出框没有正常显示', u'缺陷', u'一般', u'WZ-1.0-02-06-1', u'范训山',
             u'Linyy'],
            [u'微站登录', u'异常登录验证', u'检查正确账号后加入一个空格，输入对应密码是否能登录成功', u'登录的账号存在且网络正常', u'进入登录界面输入账号“XXXX ”后输入对应密码，点击登录',
             u'不能登录成功，提示“账号不存在”', u'该情况下登录进去了，说明判断需改进', u'缺陷', u'一般', u'WZ-1.0-02-06-1', u'范训山', u'Linyy'],
            [u'微站登录', u'异常登录验证', u'检查正确密码后加入一个空格是否能登录成功', u'登录的账号存在且网络正常', u'输入正确的账号，输入正确的密码，然后在密码后加空格，点击登录',
             u'不能登录成功，提示“账号或密码错误”', u'该情况下登录进去了，说明判断需要改进', u'缺陷', u'一般', u'WZ-1.0-02-06-1', u'范训山', u'Linyy'],
        ]

        self.testResult = []
        self.reportDetails = []


    def testReportAppend(self,id,name,method,url,param,expectedResult,actualResult,testResult):
        reportArray = []
        reportArray.append(id)
        reportArray.append(name)
        reportArray.append(method)
        reportArray.append(url)
        reportArray.append(param)
        reportArray.append(expectedResult)
        reportArray.append(actualResult)
        reportArray.append(testResult)
        self.reportDetails.append(reportArray)

    def testResultAppend(self, module, func, destination, precondition, execStep, expectedResult, testResult, problemTypes, priority, version, reporter, agent):
        testArray = []
        testArray.append(module)
        testArray.append(func)
        testArray.append(destination)
        testArray.append(precondition)
        testArray.append(execStep)
        testArray.append(expectedResult)
        testArray.append(testResult)
        testArray.append(problemTypes)
        testArray.append(priority)
        testArray.append(version)
        testArray.append(reporter)
        testArray.append(agent)
        self.testResult.append(testArray)
